package com.yckj.dao;

import cn.hutool.crypto.SecureUtil;
import com.yckj.util.DbUtilHikari;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import cn.hutool.crypto.SecureUtil;

/**
 * 对用户表的操作；注册用户、删除用户、查询用户、修改用户
 * @author xueben
 * @version 1.0
 */
public class UserDao {
    /**
     * 用户注册
     * @param uname 用户名
     * @param upsw 密码
     * @return 成功返回1，否则0
     */
    public int insertUser(String uname,String upsw){
        //1. 声明一些变量备用
        // conn代表数据库连接
        Connection conn = null;
        // 预编译对象，用pstmt执行SQL语句
        PreparedStatement pstmt = null;
        // 注册成功与否的标志，如果是0注册失败；如果1注册成功
        int flag = 0;
        // 2. 获取数据库连接
        conn = DbUtilHikari.getConnection();
        // 3. 定义并准备SQL语句
        String sql = "INSERT INTO users(username,userpsw) VALUES(?,?)";//这个SQL语句是一个添加用户的动作，username,userpsw数据库表里的字段
        try {
            pstmt = conn.prepareStatement(sql);
            //4. 给?（占位符）赋值
            pstmt.setString(1,uname);//1表示第一个?
            pstmt.setString(2, SecureUtil.md5(upsw));
            // 5. 执行SQL语句（下达执行指令）
            flag = pstmt.executeUpdate();//executeUpdate方法执行更新,执行完后返回0或者1（成功）
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            //6.关闭数据库资源
            DbUtilHikari.close(pstmt,conn);//只用了两个，就关闭两个的，关闭资源否则会造成资源泄露
        }
        return flag;

    }
}
